package main

import "fmt"

type LinkList struct {
	value int
	next  *LinkList
}

// 计算链表长度
func (l *LinkList) Size() int {
	// 先判断接收器是否为 nil
	if l == nil {
		return 0
	}
	size := 0
	for l != nil {
		size += 1
		l = l.next
	}
	return size
}

func main() {
	list := LinkList{1, &LinkList{2, &LinkList{3, &LinkList{4, nil}}}}
	fmt.Printf("list size: %d\n", list.Size())

	var emptyList *LinkList
	fmt.Printf("emptyList size: %d\n", emptyList.Size())
}
